//引入文件系统模块
const fs = require('fs')

//引入 child_process 模块 创建子进程
const { fork } = require('child_process')
//创建“creatDir”子进程，用来创建文件夹
const createDir = fork('./src/createDir.js')
const createFile = fork('./src/createFile.js')
const deleteDir = fork('./src/deleteDir.js')
const deleteFile = fork('./src/deleteFile.js')
const error = fork('./src/error.js')
const help = fork('./src/help.js')
const modifyDir = fork('./src/modifyDir.js')
const modifyFile = fork('./src/modifyFile.js')
const showDir = fork('./src/showDir.js')
const showFile = fork('./src/showFile.js')
const showPath = fork('./src/showPath.js')

//引入readline模块
const readline = require('readline').createInterface({
    input: process.stdin,
    output: process.stdout,
})

//进入主函数
main();

//使用立即执行函数，可以立即执行该匿名函数
//进程通信 根据子进程发送的消息，执行对应的回调函数，打印操作结果
(function showBack () {
    //接收来自“creatDir.js”文件所发来的消息，并打印操作结果后，再次执行主函数
    createDir.on('message', (message) => {
        console.log(message)
        main()
    })
    createFile.on('message', (message) => {
        console.log(message)
        main()
    })
    deleteDir.on('message', (message) => {
        console.log(message)
        main()
    })
    deleteFile.on('message', (message) => {
        console.log(message)
        main()
    })
    error.on('message', (message) => {
        console.log(message)
        main()
    })
    help.on('message', (message) => {
        console.log(message)
        main()
    })
    modifyDir.on('message', (message) => {
        console.log(message)
        main()
    })
    modifyFile.on('message', (message) => {
        message.forEach(msg => {
            console.log(msg);
        })
        main()
    })
    showDir.on('message', (message) => {
        console.log(message)
        main()
    })
    showFile.on('message', (message) => {
        console.log(message)
        main()
    })
    showPath.on('message', (message) => {
        console.log(message)
        main()
    })
})();


// 主函数
function main () {
    //使用readline的question方法 获取到用户的输入并进行处理
    readline.question(`请输入命令(输入"-h"获取帮助):`, (command) => {
        //trim()函数 去除用户在字符串两边的空白误输的空格
        command = command.trim()
        //如果用户输入了“创建文件夹”的相关指令，将跳转到相关的文件进行执行、实现
        if (command.startsWith('createDir')) {
            createDir.send(command)
        } else if (command.startsWith('createFile')) {
            createFile.send(command)
        } else if (command.startsWith('deleteDir')) {
            deleteDir.send(command)
        } else if (command.startsWith('deleteFile')) {
            deleteFile.send(command)
        } else if (command.startsWith('-h')) {
            help.send(command)
        } else if (command.startsWith('modifyDir')) {
            modifyDir.send(command)
        } else if (command.startsWith('modifyFile')) {
            modifyFile.send(command)
        } else if (command.startsWith('showDir')) {
            showDir.send(command)
        } else if (command.startsWith('showFile')) {
            showFile.send(command)
        } else if (command.startsWith('showPath')) {
            showPath.send(command)
        } else if (command.startsWith(0)) {
            console.log('成功退出')
            process.exit(0)
        } else {
            //错误回显，提示用户输入命令不合法
            error.send(command)
        }
    })
}